home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 August / chip-cd_2004_08.zip / 08 / Multimedia / Zoom Player Standard 4.00 / zp400std.exe / Skin / brownish.skn < prev    next >
Text File  |  2004-05-18  |  71KB  |  1,117 lines

  1. Future Brownish Media Skin (sample) by Blight
  2. // First line must be the description... don't put any comments before it.
  3. //
  4. //
  5. // This file is file is a semi-tutorial on how to create Zoom Player skins.
  6. // It shows you the exact structure used to create the default media skin.
  7. // It is only a sample file and is not required for Zoom Player to operate.
  8. //
  9. //
  10. // Constants:
  11. //
  12. // <WinWidth>        - Width in Pixels of Window
  13. // <WinHeight>       - Height in Pixels of Window
  14. // <WinHalfWidth>    - Width in Pixels of Window divided by 2 (useful for screen-centering)
  15. // <WinHalfHeight>   - Height in Pixels of Window divided by 2 (useful for screen-centering)
  16. // <PLWinWidth>      - Width in Pixels of Play List Window
  17. // <PLWinHeight>     - Height in Pixels of Play List Window
  18. // <PLWinHalfWidth>  - Width in Pixels of Play List Window divided by 2 (useful for screen-centering)
  19. // <PLWinHalfHeight> - Height in Pixels of Play List Window divided by 2 (useful for screen-centering)
  20. // <VidWidth>        - Width in Pixels of Video Area
  21. // <VidHeight>       - Height in Pixels of Video Area
  22. // <ARWidth>         - Width in Pixels of Video Area with Aspect Ratio Adjustment
  23. // <ARHeight>        - Height in Pixels of Video Area with Aspect Ratio Adjustment
  24. // <FileName>        - Name of Currently loaded file (full path)
  25. // <FileTitle>       - Name of Currently loaded file (file name+extension)
  26. // <FileBase>        - Name of Currently loaded file (file name only, no extension or path)
  27. // <cBarWidth>       - Width in Pixels of Control Bar after deducting the space used by the buttons and Right Margin
  28. // <cBarFullWidth>   - Width in Pixels of the entire Control Bar
  29. // <cBarHeight>      - Height in Pixels of Control Bar
  30. // <cBarHalfWidth>   - Width in Pixels of Control Bar after deducting the space used by the buttons divided by 2
  31. // <cBarHalfHeight>  - Height in Pixels of Control Bar divided by 3
  32. // <ovColor>         - Overlay Color RGB (can be used for transparency with the Control Bar)
  33. // <Time>            - Current Time Display (playing media)
  34. // <TimeRemain>      - Time Remaining
  35. // <Duration>        - Total Duration of playing content
  36. // <DVDChapter>      - Current DVD Chapter
  37. // <DVDTitle>        - Current DVD Title
  38. // <DVDVolume>       - Current DVD Volume Label
  39. // <PlayListItems>   - Number of items in the current play list
  40. // <PlayListTotal>   - Total Time used by currently loaded Play List Items.
  41. // <Clock>           - The Current Time (Clock)
  42. // <Date>            - The Current Date
  43. //
  44. // Vars:
  45. //
  46. // ActiveGroups   - Determines which Skin Groups are active by Default (see below for more information on skin groups)
  47. // AudioSkin      - Specifies if the Skin only contains audio (see defaultaudio.skn), value can be 1 for Audio Only and 0 for regular.
  48. // SkinFileName   - Name of non-compressed (8bit/24bit) BMP image that contains all the skin graphics
  49. // TimelineCursor - Name of a Cursor file that will be used for timeline seeking
  50. // iWinWidth      - Initial Window Width
  51. // iWinHeight     - Initial Window Height
  52. // iVidWidth      - Initial Video Width
  53. // iVidHeight     - Initial Video Height
  54. // iVidLeft       - Initial Video Position in pixels from left position of Window
  55. // iVidTop        - Initial Video Position in pixels from top position of Window
  56. // iMinWidth      - Minimum Video Width (It's recommended keep the minimum Width/Height to a 4:3 aspect ratio)
  57. // iMinHeight     - Minimum Video Height
  58. // iTransColor    - Hex RGB Value of the color used for Window Transparency on the main user interface
  59. // RateLeft       - Left Position of Rate bar witin window
  60. // RateTop        - Top Position of Rate bar witin window
  61. // tLineWidth     - TimeLine Width
  62. // tLineHeight    - TimeLine Height
  63. // tLineLeft      - TimeLine position in pixels from left position of Window
  64. // tLineTop       - TimeLine position in pixels from top position of Window
  65. // tLineColor     - TimeLine Color (Hex RGB Value, like on web pages.  Not required if a bitmap is set using TimeLineFG)
  66. // tLineFontSize  - TimeLine Font Size (don't use, replaced by tLineFontHeight)
  67. // tLineFontHeight- TimeLine Font Height
  68. // tLineFontYOfs  - TimeLine Font Y-Offset in pixels (can be negative value)
  69. // tLineFontFace  - TimeLine Font Name
  70. // tLineFontColor - TimeLine Font Color
  71. // tLineFontStyle - Bold and Italic, example : tLineFontStyle = (Bold|Italic), To disable style use (None) as value.
  72. // tLineNoText    - Don't show any text on timeline (Set to 1 to show no text and 0 to show text - default)
  73. // cBarFontSize   - Control Bar Font Size (don't use, replaced by cBarFontHeight)
  74. // cBarFontHeight - Control Bar Font Height
  75. // cBarFontYOfs   - Control Bar Font Y-Offset in pixels (can be negative value)
  76. // cBarFontFace   - Control Bar Font Name
  77. // cBarFontColor  - Control Bar Font Color
  78. // cBarFontStyle  - Bold and Italic, example : CBarFontStyle = (Bold|Italic), To disable style use (None) as value.
  79. // cBarNoText     - Don't show any text on the control bar timeline (Set to 1 to show no text and 0 to show text - default)
  80. // cBarButWidth   - Control Bar Button Width (must be set before any buttons are added to the control bar)
  81. // cBarButHeight  - Control Bar Button Height (same as width, but also sets the height of the control bar)
  82. // cBarRightMargin- Number of pixels to save on the right side of skin
  83. // cBarTLColor    - Control Bar TimeLine Color (Not required if a bitmap is set using TimeLineCBarFG)
  84. // cBarTLWidth    - Width of the Control Bar time line
  85. // cBarTLHeight   - Height of the Control Bar time line
  86. // cBarTLLeft     - Control Bar TimeLine position in pixels from left position of Control Bar
  87. // cBarTLTop      - Control Bar TimeLine position in pixels from top position of Control Bar
  88. // cTransColor    - Hex RGB Value of the color used for Window Transparency on the Control Bar
  89. // pTransColor    - Hex RGB Value of the color used for Window Transparency on the Play List
  90. //
  91. //
  92. //
  93. // Functions:
  94. //
  95. //
  96. // FillRect(DestX,DestY,Width,Height,RGBColor)
  97. // FillRectNT(DestX,DestY,Width,Height,RGBColor)
  98. //
  99. //   - Fill a rectangle with a specific Hex RGB color (The NT version prevents skin tinting which
  100. //     is important when you fill the background area of the video).
  101. //     (000000=Black, FF0000=Red, 00FF00=Green, 0000FF=Blue, FFFFFF=White, exactly like in HTML).
  102. //
  103. //
  104. // FillMask(SrcX,SrcY,Width,Height,DestX,DestY,SrcRGBColor,DestRGBColor)
  105. //
  106. //   - Fill a mask by filling any color that doesn't match the SrcRGBColor with
  107. //     the DestRGBColor.  This can be used on non-rectangular buttons that have
  108. //     a transparent background and thus should have a masked drawn behind them
  109. //     so that they don't become transparent themselves.
  110. //
  111. //
  112. // CopyBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  113. //
  114. //   - Copy a bitmap from the skin image to the user interface.
  115. //
  116. //
  117. // CopyStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,DestWidth,DestHeight)
  118. //
  119. //   - Copy a bitmap from the skin image to the user interface stretching it to fit the specified rectangle.
  120. //     This function is rather CPU intensive.
  121. //
  122. //
  123. // CopyTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  124. //
  125. //   - Copy a Color Keyed transparent bitmap from the skin image to the user interface.
  126. //     The color specified by the RGBColor is considered transparent and won't be copied
  127. //     This function can be CPU intensive if used extensively.
  128. //
  129. //
  130. // CopyMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  131. //
  132. //   - Copy an Alpha Masked bitmap from the skin image to the user interface.
  133. //     An Alpha mask is a gray representation of the image where black means no
  134. //     copying to be done and white means full copying.  Any gray value in between
  135. //     determines what percentage to mix between the background and foreground bitmaps.
  136. //     The Alpha mask must the aligned to the right of the source image and match it's size.
  137. //     This function can be CPU intensive if used extensively.
  138. //
  139. //
  140. // TileBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  141. //
  142. //   - Tile bitmap vertically to fill a specific number of pixels.
  143. //
  144. //
  145. // TileBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  146. //
  147. //   - Tile bitmap horizontally to fill a specific number of pixels.
  148. //
  149. //
  150. // TileBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  151. //
  152. //   - Tile bitmap to fill an area of specific number of pixels.
  153. //
  154. //
  155. // GradientRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  156. //
  157. //   - Fill a rectangle with a horizontal gradient from RGBColor1 to RGBColor2
  158. //     Doing gradient fills may be CPU intensive.
  159. //
  160. //
  161. // GradientRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  162. //
  163. //   - Fill a rectangle with a vertical gradient from RGBColor1 to RGBColor2
  164. //     Doing gradient fills may be CPU intensive.
  165. //
  166. //
  167. // TimeLineBG(SrcX,SrcY,Width)
  168. //
  169. //   - Bitmap positioning used for the User Interface TimeLine background, height must be the same as tLineHeight.
  170. //
  171. //
  172. // TimeLineFG(SrcX,SrcY,Width)
  173. //
  174. //   - Bitmap positioning used for the User Interface TimeLine foreground, height must be the same as tLineHeight.
  175. //     Using this function enables the Time Line (makes it visible) on the main user interface.
  176. //     Using this function means that a bitmap will be used instead of a color for the action portion of the timeline.
  177. //
  178. //
  179. // TimeLineFontShade(Left,Right,Top,Bottom)
  180. //   - This function allows you to shade (shadow/outline) the TimeLine font.  All four parameters are RGB vlaues
  181. //     representing the shading colors around the font.  Use a value of "-1" in order for shading to be disabled
  182. //     on a particular side.
  183. //
  184. //
  185. // TimeLineActive(SrcX,SrcY,Width,Height,XOffset,YOffset)
  186. //
  187. //   - This is an optional function if bitmapped TimeLine is used.  It allows you to specify a bitmap to be drawn
  188. //     at the currently active timeline position.  SrcX, SrcY and Width are pretty self explanetory.  The XOffset
  189. //     and YOffset allows you to specify how many pixels to move the bitmap to the right and down (by default the
  190. //     bitmap is drawn at the top of the timeline and to the left of the currently active position (taking into
  191. //     account the width of the bitmap).
  192. //
  193. //
  194. // TimeLineStart(SrcX,SrcY,Width)
  195. //
  196. //   - Specify a start bitmap for the timeline, the bitmap height should match the timeline bitmap height and like
  197. //     with buttons, it should actually be comprised of two bitmaps drawn next to each other (on the right) of the
  198. //     active and inactive timeline states (highlighted/non-highlighted).  The width specified is only of the first
  199. //     image, the inactive image on the right should be the same width and height.
  200. //
  201. //
  202. // TimeLineEnd(SrcX,SrcY,Width)
  203. //
  204. //   - Same as TimeLineStart, but for the end (right side) of the timeline.
  205. //
  206. //
  207. // PlayListData(DestX=Value,DestY=Value,Width=Value,Height=Value,Border=Value,Background=Value,Foreground=Value,
  208. //              SelectBG=Value,SelectFG=Value,Highlight=Value)
  209. //
  210. //   - This function sets all the neccessery data to position and color the Play List file listing.
  211. //   - Parameters:
  212. //     DestX         : Destination X-Offset on the Skin.
  213. //     DestY         : Destination Y-Offset on the Skin.
  214. //     Width         : Width of File List area.
  215. //     Height        : Height of File List area.
  216. //     Border        : RGB Value representing the list border color.
  217. //     Background    : RGB Value representing the list background color.
  218. //     Foreground    : RGB Value representing the list foreground color.
  219. //     SelectBG      : RGB Value representing the selected item background color.
  220. //     SelectFG      : RGB Value representing the selected item foreground color.
  221. //     Highlight     : RGB Value representing the playing item color.
  222. //
  223. // VolumeExData(SrcX=Value,SrcY=Value,DestX=Value,DestY=Value,Width=Value,Height=Value,Images=Value,Vertical=True/False)
  224. //
  225. //   - This function sets all the neccessery data to enable the user-interface volume controls.
  226. //   - Parameters:
  227. //     SrcX          : X-Offset from source image to the location Bitmap data.
  228. //     SrcY          : Y-Offset from source image to the location Bitmap data.
  229. //     DestX         : Destination X-Offset on the Skin.
  230. //     DestY         : Destination Y-Offset on the Skin.
  231. //     Width         : Width of a Single Volume Image.
  232. //     Height        : Height of a Single Volume Image.
  233. //     Images        : Number of Volume Images, Image are expected to be drawn aligned to the bottom of each image.
  234. //     Vertical      : Can be either "True" or "False", determines how the volume reacts to a user click (horizontally or vertically).
  235. //
  236. //     The Parameter order isn't important, just that the values are being passed.  The Vertical
  237. //     parameter is optional, by default the volume bar is horizontal.
  238. //     Example:
  239. //     VolumeExData(SrcX=208,SrcY=0,DestX=<WinWidth>-50,DestY=<WinHeight>-50,Width=42,Height=14,Images=12,Vertical=False)
  240. //
  241. //
  242. // RateExData(SrcX=Value,SrcY=Value,DestX=Value,DestY=Value,Width=Value,Height=Value,Images=Value,Vertical=True/False)
  243. //
  244. //   - This function sets all the neccessery data to enable the user-interface play rate controls.
  245. //     Make sure you have 7 images drawn for rate positions, as seen in the brownish.bmp file.
  246. //   - Parameters:
  247. //     SrcX          : X-Offset from source image to the location Bitmap data.
  248. //     SrcY          : Y-Offset from source image to the location Bitmap data.
  249. //     DestX         : Destination X-Offset on the Skin.
  250. //     DestY         : Destination Y-Offset on the Skin.
  251. //     Width         : Width of a Single Volume Image.
  252. //     Height        : Width of a Single Volume Image.
  253. //
  254. //     The Parameter order isn't important, just that the values are being passed.  The Vertical
  255. //     parameter is optional, by default the volume bar is horizontal.
  256. //     Example:
  257. //     RateExData(SrcX=208,SrcY=0,DestX=<WinWidth>-50,DestY=<WinHeight>-50,Width=42,Height=14)
  258. //
  259. //
  260. // ResizeBox(XOfs,YOfs,Width,Height,CursorType)
  261. //   - If you have transparent skin where the edges of the window are transparent,
  262. //     you may want to define a "ResizeBox".  When the mouse moves over the
  263. //     ResizeBox designated area, the cursor will change to a resize cursor and
  264. //     allow the forum to be resized from that position.
  265. //     The Values of CursorType can be:
  266. //     0 - Bottom Right Corner
  267. //     1 - Bottom Left Corner
  268. //     2 - Top Right Corner
  269. //     3 - Top Left Corner
  270. //     4 - Left Side
  271. //     5 - Right Side
  272. //     6 - Top Side
  273. //     7 - Bottom Side
  274. //
  275. //     Example:
  276. //     ResizeBox(<WinWidth>-40,<WinHeight>-40,10,10,0)
  277. //
  278. //
  279. // DrawExText(Target=Value,DestX=Value,DestY=Value,Width=Value,Height=Value,Align=Value,Case=Value,WordWrap=Value
  280. //           ,FontName=Value,FontSize=Value,FontColor=Value,FontStyle=Value,Text=Value)
  281. //
  282. //   - Parameters:
  283. //     Target        : Target Window, Can be either "Main" or "PlayList" (Default = "Main")
  284. //     DestX         : Destination X-Offset on the Skin.
  285. //     DestY         : Destination Y-Offset on the Skin.
  286. //     Width         : Maximum Width of Text (used for clipping).
  287. //     Height        : Maximum Height of Text (used for clipping).
  288. //     Align         : Text Alignment, values can be "Left, Center or Right" (Default "Left").
  289. //     Case          : Uppercase/Lowercase Structure, values can be "None,Lower,Upper,UpFirst" (Default "None").
  290. //     WordWrap      : Value can be True or False, if True and the text doesn't fit the width, it is word wrapped (Default "False").
  291. //     FontName      : The Name of the Font, i.e. Arial, Times New Romand, etc...
  292. //     FontSize      : Size of Font (approximate height in pixels).
  293. //     FontColor     : RGB value indicating the Font Color.
  294. //     FontStyle     : Bold, Italic, Both or None, if both then separated by "|" (i.e. "Bold|Italic") (Default "None").
  295. //     ShadeLeft     : RGB value represting the shadow color on the left   side (set to -1 to disable)
  296. //     ShadeRight    : RGB value represting the shadow color on the right  side (set to -1 to disable)
  297. //     ShadeTop      : RGB value represting the shadow color on the top    side (set to -1 to disable)
  298. //     ShadeBottom   : RGB value represting the shadow color on the bottom side (set to -1 to disable)
  299. //     Text          : String that should be displayed, can including dynamic content by using Constants (see above).
  300. //
  301. //   - This function allows you to draw text anywhere on the user interface.  The Text content is
  302. //     updated every time the user interface is resized and once per second (while not in fullscreen).
  303. //     This allows you to draw dynamic text such as Time, DVD Chapter, etc...
  304. //     Example:
  305. //     DrawExText(DestX=5,DestY=5,Width=<WinWidth>-10,Height=20,Align=Center,Case=UpFirst,FontName=Arial,FontSize=11,FontColor=FFFFFF,FontStyle=Bold,Text=<FileName>)
  306. //
  307. //
  308. // CreateButton(SrcX,SrcY,Width,Height,DestX,DestY,Function,Hint,Transparent)
  309. //
  310. //   - This function has been replaced with "CreateExButton", see below.
  311. //   - Creates a button with a function assigned with the function setting,
  312. //     possible function values are:
  313. //     000 - fnPlay           - All   : Starts playback and toggles between Play & Pause states.
  314. //     001 - fnPause          - All   : Pauses video and frame advances when already paused.
  315. //     002 - fnStop           - Media : Stops playback and goes to the beginning of the video.
  316. //                              DVD   : Stops playback and closes DVD.
  317. //     003 - fnStopToFirst    - Media : Stop to First Item in a Play List.
  318. //     004 - fnNextChapter    - Media : Go to Next Chapter (Internal or OGM), if no chapters are
  319. //                                      specified, advance to the next item in the Play List.
  320. //                              DVD   : Open the Next Bookmark.
  321. //     005 - fnPrevChapter    - Media : Go to Previous Chapter (Internal or OGM), if no chapters are
  322. //                                      specified, go back to the previous item in the Play List.
  323. //                              DVD   : Open the Previous Bookmark.
  324. //     006 - fnNextTrack      - Media : Go to the Next item on the Play List
  325. //                              DVD   : Go to the Next Chapter.
  326. //     007 - fnPrevTrack      - Media : Go to the Previous item on the Play List.
  327. //                              DVD   : Go to the Next Chapter.
  328. //     008 - fnNextFrame      - All   : Frame Step Forward.
  329. //     009 - fnPrevFrame      - All   : Frame Step Backward.
  330. //     010 - fnNextVid        - Media : Play the Next Video in the current directory.
  331. //     011 - fnPrevVid        - Media : Play the Previous Video in the current directory.
  332. //     012 - fnSkipForward    - All   : Skip forward a specified number of seconds.
  333. //     013 - fnSkipBackward   - All   : Skip backward a specified number of seconds.
  334. //     014 - fnJumpForward    - All   : Jump forward a specified number of seconds.
  335. //     015 - fnJumpBackward   - All   : Jump backward a specified number of seconds.
  336. //     016 - fnSeekForward    - All   : Seek forward a specified number of seconds.
  337. //     017 - fnSeekBackward   - All   : Seek backward a specified number of seconds.
  338. //     018 - fnFastForward    - All   : Play in Fast Forward.
  339. //     019 - fnRewind         - All   : Rewind Playback.
  340. //     020 - fnSlowMotion     - All   : Play in Slow Motion.
  341. //     021 - fnHalfFF         - All   : Half Fast forward speed.
  342. //     022 - fnHalfSM         - All   : Half Slow Motion speed.
  343. //     023 - fnVolUp          - All   : Increase Volume.
  344. //     024 - fnVolDown        - All   : Decrease Volume.
  345. //     025 - fnMute           - All   : Mute Volume (ON/OFF).
  346. //     026 - fnABRepeat       - All   : Start, Stop and Cancel AB-Repeat.
  347. //     027 - fnPlayEndCycle   - All   : Cycle through the "On Play Complete" values.
  348. //     028 - fnZoomAxis       - All   : Toggles the Zoom Axis (used with Zoom-In / Zoom-Out).
  349. //     029 - fnZoomIn         - All   : Zoom into video (enlarge video area).
  350. //     030 - fnZoomOut        - All   : Zoom out of video (shrink video area).
  351. //     031 - fnZoomInWidth    - All   : Stretch the video width.
  352. //     032 - fnZoomOutWidth   - All   : Shrink the video width.
  353. //     033 - fnZoomInHeight   - All   : Stretch the video height.
  354. //     034 - fnZoomOutHeight  - All   : Shrink the video height.
  355. //     035 - fnZoom           - All   : Go into Zoom Mode.
  356. //     036 - fnFullScreen     - All   : Go Into Fullscreen Mode.
  357. //     037 - fnFitSource      - All   : Resize video area to the original video source size..
  358. //     038 - fnMax            - All   : Maximize user interface to cover work area or if in fullscreen maximize
  359. //                                      video area to cover screen.
  360. //     039 - fnMinimize       - All   : Minimize the user interface.
  361. //     040 - fnARCycle        - All   : Cycle through Aspect Ratio modes.
  362. //     041 - fnRevARCycle     - All   : Reverse Cycle through Aspect Ratio modes.
  363. //     042 - fnBar            - All   : Show / Hide the Control Bar.
  364. //     043 - fnOSD            - All   : Turn the On Screen Display ON / OFF.
  365. //     044 - fnOpen           - All   : Open File(s) for playback.
  366. //     045 - fnOpenDir        - All   : Open a Directory for playback.
  367. //     046 - fnInfo           - All   : Playback Information Dialog (some information on the playing media).
  368. //     047 - fnOptions        - All   : Open the Options Dialog.
  369. //     048 - fnPresets        - All   : Open the Video Position Preset Dialog.
  370. //     049 - fnPlayList       - All   : Show / Hide the Play List Editor.
  371. //     050 - fnChapter        - Media : Show / Hide the Chapter Editor.
  372. //                            - DVD   : Show / Hide the Bookmark Editor.
  373. //     051 - fnSkin           - All   : Show / Hide the Skin Selection dialog.
  374. //     052 - fnKeyHelp        - All   : Opens the Keyboard Hotkey Dialog (key list).
  375. //     053 - fnExit           - All   : Exit application.
  376. //     054 - fnAddChapter     - Media : Add Current Position to the Chapter Editor.
  377. //                              DVD   : Save Current Position as a Bookmark.
  378. //     055 - fnSaveChapter    - Media : Save Chapter List.
  379. //     056 - fnDVDMode        - All   : Switch between the Media and DVD Modes.
  380. //     057 - fnDVDRootMenu    - DVD   : Go to the DVD's Root Menu.
  381. //     058 - fnDVDTitleMenu   - DVD   : Go to the DVD's Title Menu.
  382. //     059 - fnDVDSubMenu     - DVD   : Go to the DVD's Subtitle Menu.
  383. //     060 - fnDVDAudioMenu   - DVD   : Go to the DVD's Audio Menu.
  384. //     061 - fnDVDAngleMenu   - DVD   : Go to the DVD's Angle Menu.
  385. //     062 - fnDVDChapterMenu - DVD   : Go to the DVD's Chapter Menu.
  386. //     063 - fnDVDMenuLeft    - DVD   : Move left on a DVD Menu.
  387. //     064 - fnDVDMenuRight   - DVD   : Move right on a DVD Menu.
  388. //     065 - fnDVDMenuUp      - DVD   : Move up on a DVD Menu.
  389. //     066 - fnDVDMenuDown    - DVD   : Move down on a DVD Menu.
  390. //     067 - fnDVDMenuSelect  - DVD   : Activate selected Menu item.
  391. //     068 - fnDVDCC          - DVD   : Closed Captions ON / OFF.
  392. //     069 - fnDVDAngle       - Media : Cycle through OGM Video Tracks.
  393. //                            - DVD   : Cycle through DVD Angles.
  394. //     070 - fnDVDSub         - Media : Cycle through VobSub/OGM Subtitle Tracks.
  395. //                              DVD   : Cycle through DVD Subtitle Tracks.
  396. //     071 - fnAudioTrack     - Media : Cycle through Media Audio Tracks.
  397. //                              DVD   : Cycle through DVD Audio Tracks.
  398. //     072 - fnStayOnTop      - All   : Stay On Top ON / OFF.
  399. //     073 - fnMPEG4          - All   : MPEG4/DivX/Video Decoder Dialog (if filter is in use).
  400. //     074 - fnSub            - All   : Opens the VobSub dialog (if filter is in use).
  401. //     075 - fnAudioFilter    - All   : TFM/DeDynamic Audio Filter Dialog (if filter is in use).
  402. //     076 - fnIncRate        - All   : Increase Play rate.
  403. //     077 - fnDecRate        - All   : Decrease Play rate.
  404. //     078 - fnPrevFilterFile - None  : Previous Manual Filter File ** disabled **
  405. //     079 - fnNextFilterFile - None  : Next Manual Filter File  ** disabled **
  406. //     080 - fnSaveDF         - All   : Save Definition File for the currently open media.
  407. //     081 - fnFrameCapture   - All   : Screenshot / Frame Capture.
  408. //     082 - fnPattern        - All   : Cycle Pattern Modes.
  409. //     083 - fnEject          - All   : Eject the specified CD drive.
  410. //     084 - fnOverlayControl - All   : Show / Hide the Overlay Color Control Interface.
  411. //     085 - fnOverlayApply   - All   : Apply the Overlay Color Controls (same as button in options).
  412. //     086 - fnOverlayReset   - All   : Reset the Overlay Color Controls back to their default settings.
  413. //     087 - fnIncBrightness  - All   : Increase Overlay Brightness.
  414. //     088 - fnDecBrightness  - All   : Decrease Overlay Brightness.
  415. //     089 - fnIncContrast    - All   : Increase Overlay Contrast.
  416. //     090 - fnDecContrast    - All   : Decrease Overlay Contrast.
  417. //     091 - fnIncGamma       - All   : Increase Overlay Gamma.
  418. //     092 - fnDecGamma       - All   : Decrease Overlay Gamma.
  419. //     093 - fnIncHue         - All   : Increase Overlay Hue.
  420. //     094 - fnDecHue         - All   : Decrease Overlay Hue.
  421. //     095 - fnIncSaturation  - All   : Increase Overlay Saturation.
  422. //     096 - fnDecSaturation  - All   : Decrease Overlay Saturation.
  423. //     097 - fnUnpause        - All   : Unpause the video (Discrete Play).
  424. //     098 - fnAddALBookmark  - DVD   : Add DVD Auto-Load Bookmark.
  425. //     099 - fnSeekToStart    - All   : Seek to start of Video.
  426. //     100 - fnAudioDecoder   - All   : Pop the property dialog of filters with "Audio Decoder" in their titles.
  427. //     101 - fnDVDMenuPrev    - DVD   : Return from DVD Sub-Menu.  If on Top Menu then Resume playback.
  428. //     102 - fnChapterNav     - Media : Show / Hide the Chapter Navigator dialog.
  429. //                            - DVD   : Show / Hide the Bookmark Navigator dialog.
  430. //     103 - fnPlayListNav    - All   : Show / Hide the Play List Navigator dialog.
  431. //     104 - fnFileNav        - All   : Show / Hide the File Navigator dialog.
  432. //     105 - fnBlankingNav    - All   : Show / Hide the Blanking Navigator dialog.
  433. //     106 - fnBlankingPreset - All   : Show / Hide the Blanking Presets dialog.
  434. //     107 - fnBlanking       - All   : Show / Hide Video Blanking.
  435. //     108 - fnRandomPlay     - Media : Turns Random (shuffle) Play ON / OFF.
  436. //     109 - fnResizeNav      - All   : Show / Hide the Resize Navigator dialog.
  437. //     110 - fnDisableDVDSub  - Media : Disable VobSub / OGG Subtitles.
  438. //                              DVD   : Disable DVD Subtitle.
  439. //     111 - fnPresetCycle    - All   : Cycle through Video Position Presets.
  440. //     112 - fnRevPresetCycle - All   : Reverse Cycle through Video Position Presets.
  441. //     113 - fnBlankCycle     - All   : Cycle through Blanking Position Presets.
  442. //     114 - fnRevBlankCycle  - All   : Reverse Cycle through Blanking Position Presets.
  443. //     115 - fnDVDPlayStart   - DVD   : Play DVD bypassing Auto-Bookmark loading features.
  444. //     116 - fnNextArrowFunc  - All   : Next Active Arrow Control function.
  445. //     117 - fnPrevArrowFunc  - All   : Previous Active Arrow Control function.
  446. //     118 - fnAutoARToggle   - DVD   : Enable / Disable Automatic DVD Aspect Ratio.
  447. //     119 - fnFrameZeroALBM  - DVD   : Attempt setting a DVD Auto-Load bookmark at frame zero.
  448. //     120 - fnPauseAtEOF     - Media : Pause Playback at end of currently playing file.
  449. //     121 - fnSceneCut       - All   : Show / Hide the Scene Cut Editor.
  450. //     122 - fnGoTo           - All   : Show / Hide the GoTo Timeline dialog.
  451. //     123 - fnGoToNav        - All   : Show / Hide the GoTo Timeline Navigator interface.
  452. //     124 - fnMWFuncNav      - All   : Show / Hide the Mouse Wheel Function Navigator interface.
  453. //     125 - fnLoop           - Media : Switch between Do Nothing and Auto Reply on Play Complete.
  454. //     126 - fnBalanceLeft    - All   : Move Audio Balance to the Left.
  455. //     127 - fnBalanceRight   - All   : Move Audio Balance to the Right.
  456. //     128 - fnOpenDrive      - All   : Open an entire drive.
  457. //     129 - fnMediaNav       - All   : Show / Hide the Media Library Navigator.
  458. //     130 - fnMediaPathEdit  - All   : Show / Hide the Media Library Path and Category Editor.
  459. //     131 - fnSrcRelStretch  - All   : Enable / Disable Source Relative User Interface Stretch.
  460. //     132 - fnZoom50         - All   : Set video to default to  50%.
  461. //     133 - fnZoom100        - All   : Set video to default to 100%.
  462. //     134 - fnZoom200        - All   : Set video to default to 200%.
  463. //     135 - fnZoom400        - All   : Set video to default to 400%.
  464. //     136 - fnZoom800        - All   : Set video to default to 800%.
  465. //     137 - fnWebNav         - All   : Show / Hide the Web URL Navigator.
  466. //     138 - fnBringToFront   - All   : Bring Player Window to Front.
  467. //     139 - fnLoopPlay       - Media : Enable / Disable looping of currently playing track.
  468. //     140 - fnPLAddFiles     - All   : Add Files to Play List.
  469. //     141 - fnPLAddDir       - All   : Add Directory to Play List.
  470. //     142 - fnPLRemove       - All   : Remove Selected Items from Play List.
  471. //     143 - fnPLClear        - All   : Clear the entire Play List.
  472. //     144 - fnPLLoadList     - All   : Load a Play List.
  473. //     145 - fnPLSaveList     - All   : Save the Play List.
  474. //     146 - fnPLSort         - All   : Sort the Play List Items.
  475. //     147 - fnPLItemUp       - All   : Move Selected Play List Items Up.
  476. //     148 - fnPLItemDown     - All   : Move Selected Play List Items Down.
  477. //     149 - fnPLMax          - All   : Maximize the Play List Window.
  478. //     150 - fnLoadDF         - All   : Load Definition File for the currently open media.
  479. //     151 - fnRadioManager   - Media : Show/Hide the Radio Station Manager Dialog.
  480. //     152 - fnContextNav     - All   : Show/Hide the Context Navigator.
  481. //     153 - fnPlayHistory    - Media : Show/Hide the Play History Interface.
  482. //     154 - fnPLGetDuration  - Media : Get Duration of Media Files in the current Play list
  483. //     155 - fnEqualizer      - All   : Show/Hide the Internal Equalizer Window
  484. //     156 - fnEQEditor       - All   : Show/Hide the Equalizer Profile Selector/Editor
  485. //     157 - fnEQReset        - All   : Reset the current Equalizer Values
  486. //     158 - fnEQToggle       - All   : Enable/Disable the Equalizer
  487. //     159 - fnResyncAhead    - All   : Resynchronize Audio Ahead
  488. //     160 - fnResyncBack     - All   : Resynchronize Audio Back
  489. //     161 - fnFastPlay       - Media : Fast Playback with Audio
  490. //     162 - fnVobSubSelect   - All   : DirectVobSub Subtitle File Selection
  491. //     163 - fnOpenURL        - All   : Open URL
  492. //     164 - fnAudioMode      - Media : Switch to Audio only mode (no video area) skin
  493. //     165 - fnSSaverToggle   - All   : Internal Screen Saver Toggle
  494. //
  495. //     The numbers to the left of the function names can be used with a remote control device
  496. //     to relay the command to zoom player.  The message number is "32817", the value to the
  497. //     left should be assigned to the WParam as the function you want to execute and the LParam
  498. //     should be set to "0".  For more information on message control see the "default.key" file.
  499. //
  500. //     When specifying the source, you need to make sure that the button "up" image
  501. //     is at the specified location, and the button "down" image, is directly to it's
  502. //     right (no spacing), and of course, it must be the same width and height.
  503. //
  504. //     The Hint setting is what pop-up hint will show when the mouse is over the
  505. //     button for a few seconds.  The setting is optional but must be entered if you plan
  506. //     to use the transparency setting.
  507. //
  508. //     The transparent RGB value determines if a certain color in the button image is to
  509. //     be considered transparent.  Transparency makes for non-rectangular buttons.  The Button Up
  510. //     image is used to generate the transparent area.  This setting is optional.
  511. //
  512. //
  513. // CreateExButton(Type=Value,Target=Value,SrcX=Value,SrcY=Value,Width=Value,Height=Value,HoverX=Value,HoverY=Value,
  514. //                AlphaX=Value,AlphaY=Value,DestX=Value,DestY=Value,Function=Value,FunctionParam=Value,
  515. //                StringParam=Value,TransColor=Value,Hint=Value,AniSpeed=Value)
  516. //
  517. //   - Parameters:
  518. //     Type          : Type of Button (see below) (Default = "Normal")
  519. //     Target        : Target Window, Can be either "Main" or "PlayList" (Default = "Main")
  520. //     SrcX          : X-Offset from source image to the location Bitmap data, Button Up graphics.
  521. //     SrcY          : Y-Offset from source image to the location Bitmap data
  522. //     DownX         : X-Offset from source image to the location of the Button Down Bitmap (Optional, by default it's SrcX+Width)
  523. //     DownY         : Y-Offset from source image to the location of the Button Down Bitmap (Optional, by default it's SrcY)
  524. //     HoverX        : X-Offset from source image to the location of the Hover (mouse-over) Bitmap (also enables Hover Bitmap)
  525. //     HoverY        : Y-Offset from source image to the location of the Hover (mouse-over) Bitmap
  526. //     AlphaX        : X-Offset from source image to the location of the Alpha (Alpha Masking) Bitmap (also enables Alpha Masking)
  527. //     AlphaY        : Y-Offset from source image to the location of the Alpha (Alpha Masking) Bitmap
  528. //     ActiveX       : X-Offset from source image to the location of the Activate (Special Event) Bitmap
  529. //     ActiveY       : Y-Offset from source image to the location of the Activate (Special Event) Bitmap
  530. //     Activate      : Draws the Active Bitmap when a Special Event is called, See Below for available values.
  531. //     Width         : Width of Button
  532. //     Height        : Height of Button
  533. //     DestX         : Destination X-Offset on the Skin
  534. //     DestY         : Destination Y-Offset on the Skin
  535. //     Function      : Either "fn" function (list above) or "ex" function (see default.key file) depending on "type" parameter.
  536. //     FunctionParam : Used in combination with "ex" functions to pass a parameter to the function.
  537. //     StringParam   : A string parameter passed to certain button types.
  538. //     TransColor    : A color-keyed transparent button, an RGB value indicating the transparent colorkey.
  539. //     Hint          : A string containing the pop-up description of the button.
  540. //     AniSpeed      : If Animated buttons are enabled, the speed of animation (value from 20-1000, default = 50)
  541. //
  542. //     Also, when no image is specified:
  543. //     Color         : Background color
  544. //     Text          : A string containing a caption
  545. //     FontName      : The Name of the Font, i.e. Arial, Times New Romand, etc...
  546. //     FontSize      : Size of Font (approximate height in pixels).
  547. //     FontColor     : RGB value indicating the Font Color.
  548. //     FontStyle     : Bold, Italic, Both or None, if both then separated by "|" (i.e. "Bold|Italic") (Default "None").
  549. //
  550. //   - This function replaces the standard "CreateButton" function in newer skin.  Instead of entering
  551. //     parameters in a specific order, you can use any order but the value tag must be used, for example:
  552. //     CreateExButton(Type=Normal,Function=fnMax,Hint=Maximize Window,SrcX=20,SrcY=10,DestX=100,DestY=<WinWidth>-100,Width=25,Height=25,TransColor=FF00FF)
  553. //
  554. //     As you can see, the order of the other parameters isn't important.  Furthermore, not all parameters
  555. //     are needed, some parameters have different requirements depending on the button "Type" and some
  556. //     (like Hint and AlphaX/Y) are optional altogether.
  557. //
  558. //     Here are the possible values of the "Type" parameter:
  559. //     "Normal"   - Standard Button, accepts usual "fn" functions (see list above).
  560. //     "Filter"   - Instead of calling a function, this button opens a filter's property dialog.
  561. //                  The filter name is passed in the "StringParam" value and can contain multiple
  562. //                  sub-strings so that you could open different filters with one button (such as
  563. //                  all Video Decoders).   Example "StringParam=DIVX|XVID|MPEG4".
  564. //     "Extended" - Extended buttons are similar to the normal buttons with the exception that they
  565. //                  use the Extended functions (see default.key file for a list).  In addition to
  566. //                  the "Function" value, you must also supply the "FunctionParam" value so that it
  567. //                  could be passed on to the Function.  For example, when "Function=exSetAR", setting
  568. //                  "FunctionParam=1" will set the Aspect Ratio mode to "Source Aspect Ratio".
  569. //     "Skin"     - Use this button-type to replace the Zoom Player skin with a single button.
  570. //                  The StringParam value is assigned the new skin name (i.e. "brownish.skn").
  571. //
  572. //     Here are the possible values of the "Activate" parameter:
  573. //     "Closed"     - Draw the Active bitmap when the current play state is "Closed".
  574. //     "Stop"       - Draw the Active bitmap when the current play state is "Stopped".
  575. //     "Play"       - Draw the Active bitmap when the current play state is "Playing".
  576. //     "Pause"      - Draw the Active bitmap when the current play state is "Paused".
  577. //     "Mute"       - Draw the Active bitmap when the Audio is muted.
  578. //     "RandomPlay" - Draw the Active bitmap when Random Play is enabled.
  579. //     "LoopPlay"   - Draw the Active bitmap when playback is set to loop on the current track.
  580. //     "EQState"    - Draw the Active bitmap when the Equalizer is ON
  581. //
  582. //     Note, Alpha blending by default is disabled,  if you enable Alpha blended buttons by using the "AlphaX"
  583. //     parameter, you should make sure that the button is listed toward the end of the skin file after the
  584. //     background it should  be blended against has already been drawn!  Another thing is that Alpha Blending
  585. //     only works against the background and not against other buttons.  Using Alpha Blended icons is quite CPU
  586. //     intensive when the skin is drawn/resized.
  587. //
  588. //     See "brownish.skn" and "brownishdvd.skn" files for multiple examples of this function.  Using this
  589. //     function is slightly faster loading than "CreateButton".
  590. //
  591. //
  592. // AddBarButton(SrcX,SrcY,Function,Hint)
  593. //
  594. //   - Unlike the CreateButton function, this button adds optional buttons to the Control Bar.
  595. //     Every button you add can be turned ON/OFF by the user through the Control Bar options dialog.
  596. //     However, only buttons you skinned are accessible to the user.  Due to this, I request that
  597. //     at the very least skin the control bar buttons used by this sample skin.
  598. //     The function parameter can contain the same values as specified in the CreateButton function.
  599. //   - The Hint Value is optional, not entering a paramater means that there isn't a hint.
  600. //
  601. //
  602. // PlayListData(DestX=Value,DestY=Value,Width=Value,Height=Value,MinWidth=Value,MinHeight=Value,
  603. //              Border=RGBValue,Background=RGBValue,BackgroundGrad=RGBValue,Foreground=RGBValue,SelectBG=RGBValue,
  604. //              SelectFG=RGBValue,Highlight=RGBValue,ScrollBG=RGBValue,ScrollBGGrad=RGBValue,ScrollFace=RGBValue,
  605. //              ScrollDark=RGBValue,ScrollLight=RGBValue,BGSrcX=Value,BGSrcY=Value,BGSrcW=Value,BGSrcH=Value,
  606. //              ScrollWidth=Value,ScrollBGX=Value,ScrollBGY=Value,ScrollBGW=Value,ScrollBGH=Value,ScrollFGX=Value,
  607. //              ScrollFGY=Value,ScrollFGW=Value,ScrollFGH=Value)
  608. //
  609. //   - Parameters:
  610. //     DestX          : X Offset in which to position the Item List within the Play List Form.
  611. //     DestY          : Y Offset in which to position the Item List within the Play List Form.
  612. //     Width          : Width of Item List within the Play List Form.
  613. //     Height         : Height of Item List within the Play List Form.
  614. //     MinWidth       : Minimum Width of Play List Form as a whole.
  615. //     MinHeight      : Minimum Height of Play List Form as a whole.
  616. //     Border         : RGB Value representing the Item List Border Color.
  617. //     Background     : RGB Value representing the Item List Background Color.
  618. //     BackgroundGrad : RGB Value representing the Item List Background Gradient (only if you want gradient shading).
  619. //     BackGradHorz   : True / False Value if you want a horizontal gradient for the Background (default = False, e.g. Vertical)
  620. //     Foreground     : RGB Value representing the Item List Foreground (Text) Color.
  621. //     SelectBG       : RGB Value representing the Item List Selected Item Background Color.
  622. //     SelectBorder   : RGB Value representing the Item List Selected Item Border Color.
  623. //     SelectFG       : RGB Value representing the Item List Selected Item Foreground (Text) Color.
  624. //     SearchBG       : RGB Value representing the Item List Search Box Background Color.
  625. //     Highlight      : RGB Value representing the Item List Playing Item (Text) Color.
  626. //     ScrollBG       : RGB Value representing the Item List Scrollbar Background Color.
  627. //     ScrollBGGrad   : RGB Value representing the Item List Scrollbar Background Gradient (only if you want gradient shading).
  628. //     ScrollGradHorz : True / False Value if you want a horizontal gradient for the Scroll Background (default = False, e.g. Vertical)
  629. //     ScrollFace     : RGB Value representing the Item List Scrollbar Thumb Face Color.
  630. //     ScrollDark     : RGB Value representing the Item List Scrollbar Thumb Dark (Shadow) Color.
  631. //     ScrollLight    : RGB Value representing the Item List Scrollbar Thumb Light (Brighter) Color.
  632. //     ScrollWidth    : The Width  of the Scroll Bar in Pixels (specifying a Background image overrides this).
  633. //     ScrollHeight   : The Height of the Scroll Bar in Pixels (specifying a Thumb bitmap overrides this).
  634. //     BGSrcX         : Specifies a Source X Offset for a tiled background image to be used instead of the Background parameter.
  635. //     BGSrcY         : Specifies a Source Y Offset for a tiled background image to be used instead of the Background parameter.
  636. //     BGSrcW         : Specifies a Source Width    for a tiled background image to be used instead of the Background parameter.
  637. //     BGSrcH         : Specifies a Source Height   for a tiled background image to be used instead of the Background parameter.
  638. //     ScrollBGX      : Specifies a Source X Offset for a tiled background image to used instead of the ScrollBG parameter.
  639. //     ScrollBGY      : Specifies a Source Y Offset for a tiled background image to used instead of the ScrollBG parameter.
  640. //     ScrollBGW      : Specifies a Source Width    for a tiled background image to used instead of the ScrollBG parameter.
  641. //     ScrollBGH      : Specifies a Source Height   for a tiled background image to used instead of the ScrollBG parameter.
  642. //     ScrollFGX      : Specifies a Source X Offset for a bitmap to be used as the Scrollbar Thumb.
  643. //     ScrollFGY      : Specifies a Source Y Offset for a bitmap to be used as the Scrollbar Thumb.
  644. //     ScrollFGW      : Specifies a Source Width    for a bitmap to be used as the Scrollbar Thumb.
  645. //     ScrollFGH      : Specifies a Source Height   for a bitmap to be used as the Scrollbar Thumb.
  646. //
  647. //
  648. // EQData(Width=Value,Height=Value,BarX=Value,BarY=Value,BarW=Value,BarC=Value,
  649. //        BarPX=Value,BarPY=Value,Bar[n]X=Value,Bar[n]Y=Value)
  650. //
  651. //   - Parameters:
  652. //     Width          : Width  of the Equalizer Window (Equalizer Window has a fixed width).
  653. //     Height         : Height of the Equalizer Window (Equalizer Window has a fixed height).
  654. //     BarX           : Specifies a Source X Offset for the Equalizer Bar Graphics.
  655. //     BarY           : Specifies a Source Y Offset for the Equalizer Bar Graphics.
  656. //     BarW           : Specifies a Width (In Pixels) for the Equalizer Bar Graphics.
  657. //     BarC           : Specifies the number of Bar Stages, this needs to be an uneven number!
  658. //     BarPX          : Specifies a Destination X Offset for the PreAmp Bar.
  659. //     BarPY          : Specifies a Destination Y Offset for the PreAmp Bar.
  660. //     Bar[n]X        : The [n] is replaced by a number from 0 to 9 representing the 10 different
  661. //                      Equalizer Bars (Bands) X Positions from Left to Right (for example Bar2X=100).
  662. //     Bar[n]Y        : The [n] is replaced by a number from 0 to 9 representing the 10 different
  663. //                      Equalizer Bars (Bands) Y Positions from Left to Right (for example Bar5Y=20).
  664. //
  665. //
  666. // NavData(BGImage=FileName,ICONImage=FileName,IconSize=Value,
  667. //         DefaultX=Value,DefaultY=Value,PictureX=Value,PictureY=Value,AudioX=Value,AudioY=Value,
  668. //         VideoX=Value,VideoY=Value,DVDX=Value,DVDY=Value,ExecuteX=Value,ExecuteY=Value,
  669. //         URLX=Value,URLY=Value,ArchiveX=Value,ArchiveY=Value,FolderX=Value,FolderY=Value,
  670. //         PlayListX=Value,PlayListY=Value,CDX=Value,CDY=Value,HDX=Value,HDY=Value,
  671. //         LeftX=Value,LeftY=Value,RightX=Value,RightY=Value)
  672. //
  673. //   - This procedure assigns skinning information to the Navigator interface.  At the minimum,
  674. //     you must assign the "ICONImage", "IconSize", "DefaultX" and "DefaultY" parameters.  The
  675. //     "DefaultX" and "DefaultY" parameters must be assigned prior to any of the other icon location
  676. //     parameters.  Any unspecified icon type will fallback to the Default icon position.
  677. //
  678. //   - Parameters:
  679. //     BGImage        : File Name (no Path) of the Navigator Background Image.
  680. //     ICONImage      : File Name (no Path) of the Navigator Icon Image File.
  681. //     IconSize       : Icon size in pixels (all icons are square, so width and height are the same).
  682. //     DefaultX       : X Position (in pixels) of the Default   icon within the Icon Image file.
  683. //     DefaultY       : Y Position (in pixels) of the Default   icon within the Icon Image file.
  684. //     PictureX       : X Position (in pixels) of the Picture   icon within the Icon Image file.
  685. //     PictureY       : Y Position (in pixels) of the Picture   icon within the Icon Image file.
  686. //     AudioX         : X Position (in pixels) of the Audio     icon within the Icon Image file.
  687. //     AudioY         : Y Position (in pixels) of the Audio     icon within the Icon Image file.
  688. //     VideoX         : X Position (in pixels) of the Video     icon within the Icon Image file.
  689. //     VideoY         : Y Position (in pixels) of the Video     icon within the Icon Image file.
  690. //     DVDX           : X Position (in pixels) of the DVD       icon within the Icon Image file.
  691. //     DVDY           : Y Position (in pixels) of the DVD       icon within the Icon Image file.
  692. //     ExecuteX       : X Position (in pixels) of the Execute   icon within the Icon Image file.
  693. //     ExecuteY       : Y Position (in pixels) of the Execute   icon within the Icon Image file.
  694. //     URLX           : X Position (in pixels) of the URL       icon within the Icon Image file.
  695. //     URLY           : Y Position (in pixels) of the URL       icon within the Icon Image file.
  696. //     ArchiveX       : X Position (in pixels) of the Archive   icon within the Icon Image file.
  697. //     ArchiveY       : Y Position (in pixels) of the Archive   icon within the Icon Image file.
  698. //     FolderX        : X Position (in pixels) of the Folder    icon within the Icon Image file.
  699. //     FolderY        : Y Position (in pixels) of the Folder    icon within the Icon Image file.
  700. //     PlayListX      : X Position (in pixels) of the Play List icon within the Icon Image file.
  701. //     PlayListY      : Y Position (in pixels) of the Play List icon within the Icon Image file.
  702. //     CDX            : X Position (in pixels) of the CD        icon within the Icon Image file.
  703. //     CDY            : Y Position (in pixels) of the CD        icon within the Icon Image file.
  704. //     HDX            : X Position (in pixels) of the Hard Disk icon within the Icon Image file.
  705. //     HDY            : Y Position (in pixels) of the Hard Disk icon within the Icon Image file.
  706. //     LeftX          : X Position (in pixels) of the Left      icon within the Icon Image file.
  707. //     LeftY          : Y Position (in pixels) of the Left      icon within the Icon Image file.
  708. //     RightX         : X Position (in pixels) of the Right     icon within the Icon Image file.
  709. //     RightY         : Y Position (in pixels) of the Right     icon within the Icon Image file.
  710. //
  711. //
  712. // OSDPopUp(MinWidth=Value,MinHeight=Value,xMargin=Value,yMargin=Value,TransColor=RGBValue)
  713. //
  714. //   - This procedure enables you to skin the Pop-Up OSD Action window.
  715. //     You can do the actual skinning using the skinning functions below (similar to skinning the main window).
  716. //
  717. //   - Parameters:
  718. //     MinWidth       : Minimum width  required to draw the OSD Background
  719. //     MinHeight      : Minimum height required to draw the OSD Background
  720. //     xMargin        : Number of pixels from the left border of the OSD Window to make room for the font against the edge.
  721. //     yMargin        : Number of pixels from the top  border of the OSD Window to make room for the font against the edge.
  722. //     TransColor     : RGB Value representing the transparent color.  Don't set this parameter to disable transparency.
  723. //
  724. //
  725. // TintSource(SrcX=Value,SrcY=Value,Width=Value,Height=Value,rTint=Value,gTint=Value,bTint=Value,cIgnore=RGBValue)
  726. //
  727. //   - This procedure allows you to tint the color of regions within the source image.  Using it,
  728. //     you can create different skin files that contain different color schemes from the same
  729. //     source image.
  730. //
  731. //   - Parameters:
  732. //     SrcX           : X Offset in pixels from where to begin the color tinting.
  733. //     SrcY           : Y Offset in pixels from where to begin the color tinting.
  734. //     Width          : Width of rectangle to tint.
  735. //     Height         : Height of rectangle to tint.
  736. //     rTint          : The intensity of Red tinting (can be a negative value).
  737. //     gTint          : The intensity of Green tinting (can be a negative value).
  738. //     bTint          : The intensity of Blue tinting (can be a negative value).
  739. //     cIgnore        : A Hex RGB value containing the color that shouldn't be tinted (the transparency color usually).
  740. //
  741. //     Example:
  742. //     TintSource(SrcX=85,SrcY=495,Width=56,Height=28,rTint=-50,gTint=25,bTint=25,cIgnore=FF00FF)
  743. //
  744. //
  745. //
  746. // The following commands perform the exact function as the above, but apply to the Control Bar.
  747. //
  748. // CopyCBarBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  749. // CopyCBarStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,SrcWidth,SrcHeight)
  750. // CopyCBarTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  751. // CopyCBarMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  752. // GradientCBarRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  753. // GradientCBarRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  754. // TileCBarBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  755. // TileCBarBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  756. // TileCBarBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  757. // FillCBarRect(DestX,DestY,Width,Height,RGBColor)
  758. // TimeLineCBarBG(SrcX,SrcY,Width)
  759. // TimeLineCBarFG(SrcX,SrcY,Width)
  760. // TimeLineCBarActive(SrcX,SrcY,Width,Height,XOffset,YOffset)
  761. // TimeLineCBarFontShade(Left,Right,Top,Bottom)
  762. // TimeLineCBarStart(SrcX,SrcY,Width)
  763. // TimeLineCBarEnd(SrcX,SrcY,Width)
  764. //
  765. //
  766. // The following commands perform the exact function as the above, but apply to the Play List.
  767. //
  768. // CopyPLBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  769. // CopyPLStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,SrcWidth,SrcHeight)
  770. // CopyPLTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  771. // CopyPLMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  772. // TilePLBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  773. // TilePLBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  774. // TilePLBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  775. // GradientPLRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  776. // GradientPLRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  777. // FillPLRect(DestX,DestY,Width,Height,RGBColor)
  778. // ResizePLBox(XOfs,YOfs,Width,Height,CursorType)
  779. //
  780. //
  781. // The following commands perform the exact function as the above, but apply to the pop-up OSD.
  782. //
  783. // CopyOSDBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  784. // CopyOSDStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,SrcWidth,SrcHeight)
  785. // CopyOSDTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  786. // CopyOSDMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  787. // TileOSDBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  788. // TileOSDBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  789. // TileOSDBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  790. // GradientOSDRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  791. // GradientOSDRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  792. // FillOSDRect(DestX,DestY,Width,Height,RGBColor)
  793. //
  794. // The following commands perform the exact function as the above, but apply to the Equalizer.
  795. //
  796. // CopyEQBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  797. // CopyEQStretchedBitmap(SrcX,SrcY,SrcWidth,SrcHeight,DestX,DestY,SrcWidth,SrcHeight)
  798. // CopyEQTransBitmap(SrcX,SrcY,Width,Height,DestX,DestY,RGBColor)
  799. // CopyEQMaskedBitmap(SrcX,SrcY,Width,Height,DestX,DestY)
  800. // TileEQBitmapV(SrcX,SrcY,Width,Height,DestX,DestY,FillHeight)
  801. // TileEQBitmapH(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth)
  802. // TileEQBitmapA(SrcX,SrcY,Width,Height,DestX,DestY,FillWidth,FillHeight)
  803. // GradientEQRectH(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  804. // GradientEQRectV(DestX,DestY,Width,Height,RGBColor1,RGBColor2)
  805. // FillEQRect(DestX,DestY,Width,Height,RGBColor)
  806. //
  807. //
  808. //
  809. // Skin Groups:
  810. //
  811. // Skin Grouping is a powerful tool for creating multiple skin variations or conditional skin
  812. // behavior within the same skin file.  What it does is allow you to segment parts of the code
  813. // into a group.  Anything within the specified segement will only be used if that Group is enabled,
  814. // otherwise, that part of the skin is ignored.  Using the "exGroupToggle", "exGroupEnable",
  815. // "exGroupDisable" and "exGroupSet" functions you can modify which groups are active at any one time
  816. // and thus change the appearance of the skin.  You can see an example of this in the default skin.
  817. //
  818. // There are upto 16 skin groups you can define.  Each group has a binary bitmask value:
  819. //
  820. // | Group / Value |  Using the table to the left, if you would like to enable "Group #4" and "Group #15",
  821. // |   1         1 |  you would call the "exGroupEnable" function with a parameter value of 8192+8 = 8200.
  822. // |   2         2 |
  823. // |   3         4 |  To begin a Group within the code you use the "StartGroup" function.  For example, to
  824. // |   4         8 |  begin "Group #15" you would do "StartGroup(8192)".  After this line you would type all
  825. // |   5        16 |  the code belonging to this group and then end with the "EndGroup(8192)" command.
  826. // |   6        32 |
  827. // |   7        64 |  For ease of use, you can have multiple "Start" and "End" statements for the same group
  828. // |   8       128 |  in different parts of the code.
  829. // |   9       256 |
  830. // |  10       512 |  It is important that you specify the ActiveGroups variable (see above) to determine which
  831. // |  12      1024 |  is the initial active group.
  832. // |  13      2048 |
  833. // |  14      4096 |  Any code that isn't within a Group Block is considered shared between all the groups
  834. // |  15      8192 |  (for example, there may not be a need to change the PlayList,Equalizer or Control Bar code).
  835. // |  16     16384 |
  836. //                    You can also share code between multiple specific groups by using additional parameters:
  837. //                    StartGroup(1,64) ... EndGroup(1,64)
  838. //
  839. //
  840. //
  841. //
  842. // Comments:
  843. //
  844. // All the dynamic settings and functions can accept SIMPLE 2 item math.  Basically you
  845. // can do addition and subtraction, nothing else.  This is only used so you can position
  846. // items relative to the window size.
  847. //
  848. // Make sure you set all variables, otherwise when switching skins, some data will
  849. // remain from the older skin.
  850. //
  851. // Double check for Typos and corruct structure (as shown in the sample below), when
  852. // loading the skin, not a lot of error checking is performed, and you can easily
  853. // cause the player to crash!
  854. //
  855.  
  856. // Base Information used when loading the skin:
  857. SkinFileName    = (brownish.bmp)
  858.  
  859. // Initial settings:
  860. iWinWidth       = (430)
  861. iWinHeight      = (360)
  862. iVidWidth       = (400)
  863. iVidHeight      = (300)
  864. iVidLeft        = (4)
  865. iVidTop         = (4)
  866. iMinWidth       = (352)
  867. iMinHeight      = (264)
  868. tLineFontSize   = (10)
  869. tLineFontYOfs   = (0)
  870. tLineFontFace   = (Tahoma)
  871. tLineFontColor  = (FFFFFF)
  872. tLineFontStyle  = (Bold)
  873. cBarFontSize    = (10)
  874. cBarFontYOfs    = (0)
  875. cBarFontFace    = (Tahoma)
  876. cBarFontColor   = (FFFFFF)
  877. cBarFontStyle   = (Bold)
  878. cBarButWidth    = (25)
  879. cBarButHeight   = (24)
  880. //iTransColor     = (B5968C)
  881.  
  882. // Dynamic settings (items with window-size relative positioning):
  883. tLineWidth      = (<WinWidth>-220)
  884. tLineHeight     = (14)
  885. tLineLeft       = (21)
  886. tLineTop        = (<WinHeight>-47)
  887.  
  888. cBarTLWidth     = (<cBarWidth>-12)
  889. cBarTLHeight    = (14)
  890. cBarTLLeft      = (6)
  891. cBarTLTop       = (5)
  892.  
  893. // TimeLine background and foreground source bitmap position
  894. TimeLineBG(57,4,40)
  895. TimeLineFG(17,4,40)
  896.  
  897. // User Interface elements such as Volume and Play Rate Controls
  898. VolumeExData(SrcX=208,SrcY=0,DestX=<WinWidth>-155,DestY=<WinHeight>-47,Width=42,Height=14,Images=12)
  899. RateExData(SrcX=172,SrcY=0,DestX=<WinWidth>-87,DestY=<WinHeight>-47,Width=35,Height=14)
  900.  
  901. // Control Bar TimeLine background source bitmap position
  902. TimeLineCBarBG(113,55,40)
  903. TimeLineCBarFG(73,55,40)
  904.  
  905. // Control Bar and Integrated timeline Bitmap Separator (active/inactive areas)
  906. TimeLineActive(65,55,2,14,1,0)
  907. TimeLineCBarActive(69,55,2,14,1,0)
  908.  
  909. // Left Control Bar Side
  910. CopyCBarBitmap(115,0,6,24,0,0)
  911.  
  912. // Right Control Bar Side
  913. CopyCBarBitmap(121,0,6,24,<cBarWidth>-6,0)
  914.  
  915. // Top Control Bar Bar
  916. TileCBarBitmapH(128,0,40,5,6,0,<cBarWidth>-12)
  917.  
  918. // Bottom Control Bar Bar
  919. TileCBarBitmapH(128,5,40,5,6,<cBarHeight>-5,<cBarWidth>-12)
  920.  
  921. // Top Left corner
  922. CopyBitmap(0,23,4,4,0,0)
  923.  
  924. // Top Right corner
  925. CopyBitmap(0,72,25,1,<WinWidth>-25,0)
  926.  
  927. // Bottom Left corner
  928. CopyBitmap(0,99,1,25,0,<WinHeight>-25)
  929.  
  930. // Bottom Left corner top
  931. CopyBitmap(0,27,3,31,0,<WinHeight>-57)
  932.  
  933. // Bottom Right Corner
  934. CopyBitmap(32,28,26,26,<WinWidth>-26,<WinHeight>-26)
  935.  
  936. // Bottom Right top
  937. CopyBitmap(6,28,25,30,<WinWidth>-25,<WinHeight>-56)
  938.  
  939. // Video Bottom bar
  940. TileBitmapH(4,26,40,1,3,<WinHeight>-56,<WinWidth>-28)
  941.  
  942. // Bar background
  943. FillRect(3,<WinHeight>-55,<WinWidth>-29,29,B4968B)
  944.  
  945. // Bar Bottom Separator
  946. FillRect(0,<WinHeight>-26,<WinWidth>-26,1,9E8075)
  947.  
  948. // Bar Right Separator
  949. FillRect(<WinWidth>-26,<WinHeight>-55,1,29,9E8075)
  950.  
  951. // Left bar
  952. TileBitmapV(0,27,4,40,0,4,<WinHeight>-60)
  953.  
  954. // Right bar
  955. TileBitmapV(5,28,26,40,<WinWidth>-26,1,<WinHeight>-57)
  956.  
  957. // Top Bar
  958. TileBitmapH(4,23,40,4,4,0,<WinWidth>-29)
  959.  
  960. // Bottom Bar
  961. TileBitmapH(59,28,40,25,1,<WinHeight>-25,<WinWidth>-27)
  962.  
  963. // Timeline left side
  964. CopyBitmap(0,0,17,22,4,<WinHeight>-51)
  965. // Timeline right side
  966. CopyBitmap(97,0,17,22,<WinWidth>-199,<WinHeight>-51)
  967. // Timeline top
  968. TileBitmapH(17,0,40,4,21,<WinHeight>-51,<WinWidth>-220)
  969. // Timeline bottom
  970. TileBitmapH(17,18,40,4,21,<WinHeight>-33,<WinWidth>-220)
  971.  
  972. // Volume bar left side
  973. CopyBitmap(100,28,23,22,<WinWidth>-178,<WinHeight>-51)
  974. // Volume bar right side
  975. CopyBitmap(124,28,11,22,<WinWidth>-113,<WinHeight>-51)
  976. // Volume bar top
  977. CopyBitmap(17,0,42,4,<WinWidth>-155,<WinHeight>-51)
  978. // Volume bar bottom
  979. CopyBitmap(17,18,42,4,<WinWidth>-155,<WinHeight>-33)
  980.  
  981. // Rate bar right side
  982. CopyBitmap(148,28,23,22,<WinWidth>-52,<WinHeight>-51)
  983. // Rate bar left side
  984. CopyBitmap(136,28,11,22,<WinWidth>-98,<WinHeight>-51)
  985. // Rate bar top
  986. CopyBitmap(17,0,35,4,<WinWidth>-87,<WinHeight>-51)
  987. // Rate bar bottom
  988. CopyBitmap(17,18,35,4,<WinWidth>-87,<WinHeight>-33)
  989.  
  990. // Video Area
  991. FillRectNT(4,4,<VidWidth>,<VidHeight>,000000)
  992.  
  993. // Right Buttons
  994. CreateExButton(Type=Normal,SrcX=  0,SrcY= 72,Width=25,Height=27,DestX=<WinWidth>-25,DestY=  0,Function=fnExit,Hint=Exit Program)
  995. CreateExButton(Type=Normal,SrcX= 50,SrcY= 72,Width=25,Height=27,DestX=<WinWidth>-25,DestY= 27,Function=fnMax,Hint=Maximize Window)
  996. CreateExButton(Type=Normal,SrcX=100,SrcY= 72,Width=25,Height=27,DestX=<WinWidth>-25,DestY= 54,Function=fnMinimize,Hint=Minimize Window)
  997. CreateExButton(Type=Normal,SrcX=  0,SrcY= 99,Width=25,Height=27,DestX=<WinWidth>-25,DestY= 81,Function=fnFullScreen,Hint=FullScreen Mode)
  998. CreateExButton(Type=Normal,SrcX= 50,SrcY= 99,Width=25,Height=27,DestX=<WinWidth>-25,DestY=108,Function=fnZoom,Hint=Zoom Mode)
  999. CreateExButton(Type=Normal,SrcX=250,SrcY=125,Width=25,Height=27,DestX=<WinWidth>-25,DestY=135,Function=fnSceneCut,Hint=Scene Cut Editor)
  1000. CreateExButton(Type=Normal,SrcX=150,SrcY=125,Width=25,Height=27,DestX=<WinWidth>-25,DestY=162,Function=fnBlankingPreset,Hint=Blanking Preset Editor)
  1001. CreateExButton(Type=Normal,SrcX=100,SrcY=126,Width=25,Height=27,DestX=<WinWidth>-25,DestY=189,Function=fnPlayList,Hint=Play List Editor)
  1002. CreateExButton(Type=Normal,SrcX=  0,SrcY=126,Width=25,Height=27,DestX=<WinWidth>-25,DestY=216,Function=fnChapter,Hint=Chapter Editor)
  1003. CreateExButton(Type=Normal,SrcX= 50,SrcY=126,Width=25,Height=27,DestX=<WinWidth>-25,DestY=243,Function=fnSkin,Hint=Skin Selector)
  1004. CreateExButton(Type=Normal,SrcX=100,SrcY= 99,Width=25,Height=27,DestX=<WinWidth>-25,DestY=270,Function=fnOptions,Hint=Options)
  1005. // Right Button divider
  1006. CopyBitmap(0,72,25,1,<WinWidth>-25,297)
  1007.  
  1008. // Bottom Buttons
  1009. CreateExButton(Type=Normal,SrcX=  0,SrcY=203,Width=27,Height=25,DestX=  0,DestY=<WinHeight>-25,Function=fnRewind,Hint=Rewind)
  1010. CreateExButton(Type=Normal,SrcX=  0,SrcY=153,Width=27,Height=25,DestX= 27,DestY=<WinHeight>-25,Function=fnPlay,Hint=Play / Pause Video)
  1011. CreateExButton(Type=Normal,SrcX=  0,SrcY=178,Width=27,Height=25,DestX= 54,DestY=<WinHeight>-25,Function=fnFastForward,Hint=Fast Forward)
  1012. CreateExButton(Type=Normal,SrcX= 54,SrcY=153,Width=27,Height=25,DestX= 81,DestY=<WinHeight>-25,Function=fnStop,Hint=Stop Video)
  1013. CreateExButton(Type=Normal,SrcX= 54,SrcY=178,Width=27,Height=25,DestX=108,DestY=<WinHeight>-25,Function=fnPrevTrack,Hint=Previous Track)
  1014. CreateExButton(Type=Normal,SrcX=162,SrcY=178,Width=27,Height=25,DestX=135,DestY=<WinHeight>-25,Function=fnPrevChapter,Hint=Previous Chapter)
  1015. CreateExButton(Type=Normal,SrcX=216,SrcY=178,Width=27,Height=25,DestX=162,DestY=<WinHeight>-25,Function=fnNextChapter,Hint=Next Chapter)
  1016. CreateExButton(Type=Normal,SrcX=108,SrcY=178,Width=27,Height=25,DestX=189,DestY=<WinHeight>-25,Function=fnNextTrack,Hint=Next Track)
  1017. CreateExButton(Type=Normal,SrcX=270,SrcY=203,Width=27,Height=25,DestX=216,DestY=<WinHeight>-25,Function=fnAudioTrack,Hint=Next Audio Track)
  1018. CreateExButton(Type=Normal,SrcX=270,SrcY=178,Width=27,Height=25,DestX=243,DestY=<WinHeight>-25,Function=fnDVDSub,Hint=Next Subtitle Track)
  1019. CreateExButton(Type=Normal,SrcX=108,SrcY=153,Width=27,Height=25,DestX=270,DestY=<WinHeight>-25,Function=fnOpen,Hint=Open Media)
  1020. CreateExButton(Type=Normal,SrcX=108,SrcY=203,Width=27,Height=25,DestX=297,DestY=<WinHeight>-25,Function=fnBar,Hint=Show / Hide Control Bar)
  1021. // Bottom Button divider
  1022. CopyBitmap(0,153,1,25,324,<WinHeight>-25)
  1023.  
  1024. // TimeLine Buttons
  1025. CreateExButton(Type=Normal,SrcX=151,SrcY=71,Width=8,Height=12,DestX=            10,DestY=<WinHeight>-46,Function=fnSkipBackward,Hint=Skip Backwards)
  1026. CreateExButton(Type=Normal,SrcX=151,SrcY=84,Width=8,Height=12,DestX=<WinWidth>-196,DestY=<WinHeight>-46,Function=fnSkipForward,Hint=Skip Forward)
  1027. // Volume bar Buttons
  1028. CreateExButton(Type=Normal,SrcX=154,SrcY=51,Width=9,Height= 9,DestX=<WinWidth>-112,DestY=<WinHeight>-50,Function=fnVolUp,Hint=Increase Volume)
  1029. CreateExButton(Type=Normal,SrcX=154,SrcY=61,Width=9,Height= 9,DestX=<WinWidth>-112,DestY=<WinHeight>-39,Function=fnVolDown,Hint=Decrease Volume)
  1030. // Rate bar Buttons
  1031. CreateExButton(Type=Normal,SrcX=154,SrcY=51,Width=9,Height= 9,DestX=<WinWidth>- 97,DestY=<WinHeight>-50,Function=fnIncRate,Hint=Increase Play Rate)
  1032. CreateExButton(Type=Normal,SrcX=154,SrcY=61,Width=9,Height= 9,DestX=<WinWidth>- 97,DestY=<WinHeight>-39,Function=fnDecRate,Hint=Decrease Play Rate)
  1033.  
  1034. // Control Bar Buttons
  1035. AddBarButton(0,252,fnPlay,Play / Pause Video)
  1036. AddBarButton(100,228,fnSlowMotion,Slow Motion)
  1037. AddBarButton(50,228,fnFastForward,Fast Forward)
  1038. AddBarButton(100,276,fnPrevChapter,Previous Chapter)
  1039. AddBarButton(150,276,fnNextChapter,Next Chapter)
  1040. AddBarButton(50,252,fnStop,Stop Video)
  1041. AddBarButton(0,276,fnPrevTrack,Previous Track)
  1042. AddBarButton(50,276,fnNextTrack,Next Track)
  1043. AddBarButton(250,252,fnAudioTrack,Next Audio Track)
  1044. AddBarButton(250,228,fnDVDSub,Next Subtitle Track)
  1045. AddBarButton(200,252,fnZoomIn,Zoom-In)
  1046. AddBarButton(200,228,fnZoomOut,Zoom-Out)
  1047. AddBarButton(200,276,fnZoom,Zoom Mode)
  1048. AddBarButton(150,300,fnFullScreen,FullScreen Mode)
  1049. AddBarButton(100,300,fnARCycle,Cycle Aspect Ratio Modes)
  1050. AddBarButton(200,300,fnBlankingNav,Blanking Navigator)
  1051. AddBarButton(0,300,fnVolUp,Increase Volume)
  1052. AddBarButton(50,300,fnVolDown,Decrease Volume)
  1053. AddBarButton(150,228,fnEject,Eject)
  1054. AddBarButton(150,252,fnOpen,Open Media)
  1055. AddBarButton(100,252,fnExit,Exit Program)
  1056.  
  1057. // Example of a Biliniar streched bitmap copy
  1058. //CopyStretchedBitmap(150,98,52,27,4,4,<VidWidth>,<VidHeight>)
  1059.  
  1060. // Example of a Gradient fill of the Video Area, Red to White
  1061. //GradientRectV(4,4,<VidWidth>,<VidHeight>,FF00FF,00FF00)
  1062.  
  1063. // Example of Transparent bitmap copy
  1064. //CopyTransBitmap(251,0,32,16,10,10,ECD000)
  1065.  
  1066. // Example of Alpha Blended Mask Copy, Mask must be aligned to the right of the bitmap (and of the same size)
  1067. //CopyMaskedBitmap(267,153,16,16,<WinWidth>-24,<WinHeight>-50)
  1068.  
  1069. // Example of a button using the EX functions (see "default.key" for a list of functions).
  1070. //CreateExButton(Type=Extended,SrcX=0,SrcY=72,Width=25,Height=27,DestX=0,DestY=0,Function=exSetAR,FunctionParam=1,Hint=Set Aspect Ratio to Source Aspect Ratio)
  1071.  
  1072. // Example of a filter property opening button
  1073. //CreateExButton(Type=Filter,SrcX=0,SrcY=72,Width=25,Height=27,DestX=0,DestY=0,StringParam=DivX|XviD|MPEG4|MPEG-4,Hint=Open any MPEG4 based decoder filter)
  1074.  
  1075. // Example of a Transparent Button
  1076. //CreateExButton(Type=Normal,SrcX=32,SrcY=55,Width=16,Height=16,DestX=<WinWidth>-22,DestY=<WinHeight>-50,Function=fnInfo,TransColor=ECD000,Hint=File Information)
  1077.  
  1078. // Example of an Alpha Blended Button with Hovering (Mouse-Over)
  1079. //CreateExButton(Type=Normal,SrcX=251,SrcY=153,Width=16,Height=16,HoverX=299,HoverY=153,AlphaX=283,AlphaY=153,DestX=<WinHalfWidth>+22,DestY=<WinHeight>-50,Function=fnInfo,Hint=File Information)
  1080.  
  1081. // Example of Drawing Dynamic Text, First draw the Shadow (One Pixel lower and drawn first)
  1082. //DrawExText(DestX=5,DestY=<WinHeight>-56,Width=<WinWidth>-10,Height=20,Align=Center,Case=UpFirst,FontName=Arial,FontSize=8,FontColor=000000,FontStyle=Bold,Text=<FileName>)
  1083. // Then the Actual Text
  1084. //DrawExText(DestX=5,DestY=<WinHeight>-57,Width=<WinWidth>-10,Height=20,Align=Center,Case=UpFirst,FontName=Arial,FontSize=8,FontColor=FFFFFF,FontStyle=Bold,Text=<FileName>)
  1085.  
  1086. // Another example of Drawing Dynamic Text (Playing times)
  1087. //DrawExText(DestX=5,DestY=<WinHeight>-57,Width=<WinWidth>-10,Height=20,Align=Center,Case=UpFirst,FontName=Arial,FontSize=8,FontColor=FFFFFF,FontStyle=Bold,Text=At <Time> out of <Duration> - Remaining: <TimeRemain>)
  1088.  
  1089. // Example of using the same graphics of the Play Rate Bar for Audio Balance
  1090. //BalanceExData(SrcX=172,SrcY=0,DestX=<WinWidth>-87,DestY=<WinHeight>-47,Width=35,Height=14)
  1091.  
  1092. // Play List - Very simplistic, no bitmap is actually used
  1093. FillPLRect(0,0,<PLWinWidth>,<PLWinHeight>,6F6F6F)
  1094. FillPLRect(0,0,<PLWinWidth>-1,<PLWinHeight>-1,FFFFFF)
  1095. FillPLRect(1,1,<PLWinWidth>-2,<PLWinHeight>-2,C0C0C0)
  1096. FillPLRect(<PLWinWidth>-67,5,62,23,6F6F6F)
  1097. CreateExButton(Type=Normal,Text=Add Files,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=6,Function=fnPLAddFiles,Hint=Add Files to Play List)
  1098. FillPLRect(<PLWinWidth>-67,30,62,23,6F6F6F)
  1099. CreateExButton(Type=Normal,Text=Add Dir,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=31,Function=fnPLAddDir,Hint=Add Directory to Play List)
  1100. FillPLRect(<PLWinWidth>-67,60,62,23,6F6F6F)
  1101. CreateExButton(Type=Normal,Text=Remove,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=61,Function=fnPLRemove,Hint=Remove Selected Items)
  1102. FillPLRect(<PLWinWidth>-67,85,62,23,6F6F6F)
  1103. CreateExButton(Type=Normal,Text=Clear,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=86,Function=fnPLClear,Hint=Clear Play List)
  1104. FillPLRect(<PLWinWidth>-67,115,62,23,6F6F6F)
  1105. CreateExButton(Type=Normal,Text=Load List,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=116,Function=fnPLLoadList,Hint=Load Play List)
  1106. FillPLRect(<PLWinWidth>-67,140,62,23,6F6F6F)
  1107. CreateExButton(Type=Normal,Text=Save List,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=141,Function=fnPLSaveList,Hint=Save Play List)
  1108. FillPLRect(<PLWinWidth>-67,165,62,23,6F6F6F)
  1109. CreateExButton(Type=Normal,Text=Sort,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=166,Function=fnPLSort,Hint=Sort Play List)
  1110. FillPLRect(<PLWinWidth>-67,195,28,23,6F6F6F)
  1111. CreateExButton(Type=Normal,Text=UP,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=26,Height=21,DestX=<PLWinWidth>-66,DestY=196,Function=fnPLItemUp,Hint=Move Selected Items Up)
  1112. FillPLRect(<PLWinWidth>-33,195,28,23,6F6F6F)
  1113. CreateExButton(Type=Normal,Text=DN,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=26,Height=21,DestX=<PLWinWidth>-32,DestY=196,Function=fnPLItemDown,Hint=Move Selected Items Down)
  1114. FillPLRect(<PLWinWidth>-67,<PLWinHeight>-28,62,23,6F6F6F)
  1115. CreateExButton(Type=Normal,Text=Close,FontColor=000000,Color=B0B0B0,Target=PlayList,Width=60,Height=21,DestX=<PLWinWidth>-66,DestY=<PLWinHeight>-27,Function=fnPlayList,Hint=Close Play List)
  1116. PlayListData(DestX=5,DestY=5,Width=<PLWinWidth>-76,Height=<PLWinHeight>-10,Border=6F6F6F,Background=9F9F9F,Foreground=000000,SelectBorder=006FDF,SelectBG=008FFF,SelectFG=000000,Highlight=FFFFFF,ScrollBG=8F8F8F,ScrollFace=C0C0C0,ScrollDark=8F8F8F,ScrollLight=EFEFEF)
  1117.